--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
nomadnet/ui/textui/Guide.py 2f2fdd6a0c67937c5b5bee94e1658bed3d017ab6 (2f2fdd6a) Text, 14.32 KB
Tff7b72import T7ee787RNS
Tff7b72import T7ee787urwid
Tff7b72import T7ee787nomadnet
Tff7b72from T7ee787nomadnetT7ee787.T7ee787vendorT7ee787.T7ee787additional_urwid_widgets Tff7b72import Te6edf3IndicativeListBoxTb4b4b4, Te6edf3MODIFIER_KEY
Tff7b72from T7ee787.T7ee787MicronParser Tff7b72import Te6edf3markup_to_attrmaps
Tff7b72from T7ee787.T7ee787Scrollable Tff7b72import Tff7b72*
Tff7b72class T56d364GuideDisplayShortcutsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Te6edf3g Tff7b72= Te6edf3appTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffshortcutbarTa5d6ff"Tb4b4b4)
Tff7b72class T56d364ListEntryTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4)Tb4b4b4:
Te6edf3_selectable Tff7b72= Tff7b72True
Te6edf3signals Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6ffclickTa5d6ff"Tb4b4b4]
Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
T8b949e"""
Send 'click' signal on 'activate' command.
"""
Tff7b72if Tff7b72selfTff7b72.Td2a8ff_command_mapTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72!= Te6edf3urwidTff7b72.Td2a8ffACTIVATETb4b4b4:
Tff7b72return Te6edf3key
Tff7b72selfTff7b72.Td2a8ff_emitTb4b4b4(Ta5d6ff'Ta5d6ffclickTa5d6ff'Tb4b4b4)
Tff7b72def Td2a8ffmouse_eventTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3eventTb4b4b4, Te6edf3buttonTb4b4b4, Te6edf3xTb4b4b4, Te6edf3yTb4b4b4, Te6edf3focusTb4b4b4)Tb4b4b4:
T8b949e"""
Send 'click' signal on button 1 press.
"""
Tff7b72if Te6edf3button Tff7b72!= T79c0ff1 Tff7b72or Tff7b72not Te6edf3urwidTff7b72.Td2a8ffutilTff7b72.Td2a8ffis_mouse_pressTb4b4b4(Te6edf3eventTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72False
Tff7b72selfTff7b72.Td2a8ff_emitTb4b4b4(Ta5d6ff'Ta5d6ffclickTa5d6ff'Tb4b4b4)
Tff7b72return Tff7b72True
Tff7b72class T56d364SelectTextTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4)Tb4b4b4:
Te6edf3_selectable Tff7b72= Tff7b72True
Te6edf3signals Tff7b72= Tb4b4b4[Ta5d6ff"Ta5d6ffclickTa5d6ff"Tb4b4b4]
Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
T8b949e"""
Send 'click' signal on 'activate' command.
"""
Tff7b72if Tff7b72selfTff7b72.Td2a8ff_command_mapTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72!= Te6edf3urwidTff7b72.Td2a8ffACTIVATETb4b4b4:
Tff7b72return Te6edf3key
Tff7b72selfTff7b72.Td2a8ff_emitTb4b4b4(Ta5d6ff'Ta5d6ffclickTa5d6ff'Tb4b4b4)
Tff7b72def Td2a8ffmouse_eventTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3eventTb4b4b4, Te6edf3buttonTb4b4b4, Te6edf3xTb4b4b4, Te6edf3yTb4b4b4, Te6edf3focusTb4b4b4)Tb4b4b4:
T8b949e"""
Send 'click' signal on button 1 press.
"""
Tff7b72if Te6edf3button Tff7b72!= T79c0ff1 Tff7b72or Tff7b72not Te6edf3urwidTff7b72.Td2a8ffutilTff7b72.Td2a8ffis_mouse_pressTb4b4b4(Te6edf3eventTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72False
Tff7b72selfTff7b72.Td2a8ff_emitTb4b4b4(Ta5d6ff'Ta5d6ffclickTa5d6ff'Tb4b4b4)
Tff7b72return Tff7b72True
Tff7b72class T56d364GuideEntryTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4, Te6edf3readerTb4b4b4, Te6edf3topic_nameTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffreader Tff7b72= Te6edf3reader
Te6edf3g Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs
Te6edf3widget Tff7b72= Te6edf3ListEntryTb4b4b4(Te6edf3topic_nameTb4b4b4)
Te6edf3urwidTff7b72.Td2a8ffconnect_signalTb4b4b4(Te6edf3widgetTb4b4b4, Ta5d6ff"Ta5d6ffclickTa5d6ff"Tb4b4b4, Tff7b72selfTff7b72.Td2a8ffdisplay_topicTb4b4b4, Te6edf3topic_nameTb4b4b4)
Te6edf3style Tff7b72= Ta5d6ff"Ta5d6fflist_normalTa5d6ff"
Te6edf3focus_style Tff7b72= Ta5d6ff"Ta5d6fflist_focusTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffdisplay_widget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3widgetTb4b4b4, Te6edf3styleTb4b4b4, Te6edf3focus_styleTb4b4b4)
Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Tff7b72selfTff7b72.Td2a8ffdisplay_widgetTb4b4b4)
Tff7b72def Td2a8ffdisplay_topicTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3eventTb4b4b4, Te6edf3topicTb4b4b4)Tb4b4b4:
Te6edf3markup Tff7b72= Te6edf3TOPICSTb4b4b4[Te6edf3topicTb4b4b4]
Te6edf3attrmaps Tff7b72= Te6edf3markup_to_attrmapsTb4b4b4(Te6edf3markupTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffreaderTff7b72.Td2a8ffset_content_widgetsTb4b4b4(Te6edf3attrmapsTb4b4b4)
Tff7b72class T56d364TopicListTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4, Te6edf3guide_displayTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Te6edf3g Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs
Tff7b72selfTff7b72.Td2a8fftopic_list Tff7b72= Tb4b4b4[
Te6edf3GuideEntryTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Te6edf3guide_displayTb4b4b4, Ta5d6ff"Ta5d6ffIntroductionTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3GuideEntryTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Te6edf3guide_displayTb4b4b4, Ta5d6ff"Ta5d6ffConversationsTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3GuideEntryTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Te6edf3guide_displayTb4b4b4, Ta5d6ff"Ta5d6ffMarkupTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3GuideEntryTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Te6edf3guide_displayTb4b4b4, Ta5d6ff"Ta5d6ffFirst RunTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3GuideEntryTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Te6edf3guide_displayTb4b4b4, Ta5d6ff"Ta5d6ffLicenses & CreditsTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffilb Tff7b72= Te6edf3IndicativeListBoxTb4b4b4(
Tff7b72selfTff7b72.Td2a8fftopic_listTb4b4b4,
Te6edf3initialization_is_selection_changeTff7b72=Tff7b72FalseTb4b4b4,
Tb4b4b4)
Te6edf3urwidTff7b72.Td2a8ffWidgetWrapTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Tff7b72selfTff7b72.Td2a8ffilbTb4b4b4, Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffTopicsTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffupTa5d6ff" Tff7b72and Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffilbTff7b72.Td2a8fffirst_item_is_selectedTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3nomadnetTff7b72.Td2a8ffNomadNetworkAppTff7b72.Td2a8ffget_shared_instanceTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffuiTff7b72.Td2a8ffmain_displayTff7b72.Td2a8ffframeTff7b72.Td2a8ffset_focusTb4b4b4(Ta5d6ff"Ta5d6ffheaderTa5d6ff"Tb4b4b4)
Tff7b72return Tffa657superTb4b4b4(Te6edf3TopicListTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)
Tff7b72class T56d364GuideDisplayTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3list_width Tff7b72= T79c0ff0.33
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Te6edf3g Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs
Te6edf3topic_text Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Tffea00\nTa5d6ffNo topic selectedTa5d6ff"Tb4b4b4, Te6edf3alignTff7b72=Ta5d6ff"Ta5d6ffleftTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffleft_area Tff7b72= Te6edf3TopicListTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Tff7b72selfTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffright_area Tff7b72= Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffFillerTb4b4b4(Te6edf3topic_textTb4b4b4, Ta5d6ff"Ta5d6fftopTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcolumns Tff7b72= Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4(
Tb4b4b4[
Tb4b4b4(Ta5d6ff"Ta5d6ffweightTa5d6ff"Tb4b4b4, Te6edf3GuideDisplayTff7b72.Td2a8fflist_widthTb4b4b4, Tff7b72selfTff7b72.Td2a8ffleft_areaTb4b4b4)Tb4b4b4,
Tb4b4b4(Ta5d6ff"Ta5d6ffweightTa5d6ff"Tb4b4b4, T79c0ff1Tff7b72-Te6edf3GuideDisplayTff7b72.Td2a8fflist_widthTb4b4b4, Tff7b72selfTff7b72.Td2a8ffright_areaTb4b4b4)
Tb4b4b4]Tb4b4b4,
Te6edf3dividecharsTff7b72=T79c0ff0Tb4b4b4, Te6edf3focus_columnTff7b72=T79c0ff0
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshortcuts_display Tff7b72= Te6edf3GuideDisplayShortcutsTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Tff7b72selfTff7b72.Td2a8ffcolumns
Tff7b72def Td2a8ffset_content_widgetsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3new_contentTb4b4b4)Tb4b4b4:
Te6edf3options Tff7b72= Tff7b72selfTff7b72.Td2a8ffcolumnsTff7b72.Td2a8ffoptionsTb4b4b4(Te6edf3width_typeTff7b72=Ta5d6ff"Ta5d6ffweightTa5d6ff"Tb4b4b4, Te6edf3width_amountTff7b72=T79c0ff1Tff7b72-Te6edf3GuideDisplayTff7b72.Td2a8fflist_widthTb4b4b4)
Te6edf3pile Tff7b72= Te6edf3urwidTff7b72.Td2a8ffPileTb4b4b4(Te6edf3new_contentTb4b4b4)
T8b949e#content = urwid.LineBox(urwid.Filler(pile, "top"))
Te6edf3content Tff7b72= Te6edf3urwidTff7b72.Td2a8ffLineBoxTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3ScrollBarTb4b4b4(Te6edf3ScrollableTb4b4b4(Te6edf3pileTb4b4b4)Tb4b4b4, Te6edf3thumb_charTff7b72=Ta5d6ff"Tffea00\u2503Ta5d6ff"Tb4b4b4, Te6edf3trough_charTff7b72=Ta5d6ff"Ta5d6ff Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffscrollbarTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcolumnsTff7b72.Td2a8ffcontentsTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72= Tb4b4b4(Te6edf3contentTb4b4b4, Te6edf3optionsTb4b4b4)
Tff7b72def Td2a8ffshortcutsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffshortcuts_display
Te6edf3TOPIC_INTRODUCTION Tff7b72= Ta5d6ff'''Ta5d6ff>Nomad Network
Ta5d6ffCommunicate Freely.
Ta5d6ffNomad Network is built using Reticulum
Ta5d6ff-~
Ta5d6ff## Notable Features
Ta5d6ff - Encrypted messaging over packet-radio, LoRa, WiFi or anything else [Reticulum](https://github.com/markqvist/Reticulum) supports.
Ta5d6ff - Zero-configuration, minimal-infrastructure mesh communication
Ta5d6ff-
Ta5d6ff## Current Status
Ta5d6ffPre-alpha. At this point Nomad Network is usable as a basic messaging client over Reticulum networks, but only the very core features have been implemented. Development is ongoing and current features being implemented are:
Ta5d6ff - Propagated messaging and discussion threads
Ta5d6ff - Connectable nodes that can host pages, files and other resources
Ta5d6ff - Collaborative information sharing and spatial map-style Ta5d6ff"Ta5d6ffwikisTa5d6ff"
Ta5d6ff-
Ta5d6ff## Dependencies:
Ta5d6ff - Python 3
Ta5d6ff - RNS
Ta5d6ff - LXMF
Ta5d6ff```
Ta5d6ffTo use Nomad Network on packet radio or LoRa, you will need to configure your Reticulum installation
Ta5d6ffto use any relevant packet radio TNCs or LoRa devices on your system. See the Reticulum documentation
Ta5d6ff for info.
Ta5d6ff## Caveat Emptor
Ta5d6ffNomad Network is experimental software, and should be considered as such. While it has been built wit
Ta5d6ffh cryptography best-practices very foremost in mind, it _has not_ been externally security audited, a
Ta5d6ffnd there could very well be privacy-breaking bugs. If you want to help out, or help sponsor an audit,
Ta5d6ff please do get in touch.
Ta5d6ff'''
Te6edf3TOPIC_CONVERSATIONS Tff7b72= Ta5d6ff'''Ta5d6ffConversations
Ta5d6ff=============
Ta5d6ffConversations in Nomad Network
Ta5d6ff'''
Te6edf3TOPIC_MARKUP Tff7b72= Ta5d6ff'''Ta5d6ff>Outputting Formatted Text
Ta5d6ff>>>>>>>>>>>>>>>
Ta5d6ff-Tffea00\u223f
Ta5d6ff<
Ta5d6ff`c`!Hello!`! This is output from `*micron`*
Ta5d6ffMicron generates formatted text for your terminal
Ta5d6ff`a
Ta5d6ff>>>>>>>>>>>>>>>
Ta5d6ff-Tffea00\u223f
Ta5d6ff<
Ta5d6ffNomad Network supports a simple and functional markup language called `*micron`*. If you are familiar with `*markdown`* or `*HTML`*, you will feel right at home writing pages with micron.
Ta5d6ffWith micron you can easily create structured documents and pages with formatting, colors, glyphs and icons, ideal for display in terminals.
Ta5d6ff>>Recommendations and Requirements
Ta5d6ffWhile micron can output formatted text to even the most basic terminal, thereTa5d6ff'Ta5d6ffs a few capabilities your terminal `*must`* support to display micron output correctly, and some that, while not strictly necessary, make the experience a lot better.
Ta5d6ff>>>Encoding
Ta5d6ffAll micron sources are intepreted as UTF-8, and micron assumes it can output UTF-8 characters to the terminal. If your terminal does not support UTF-8, output will be faulty.
Ta5d6ff>>>Colors
Ta5d6ffShading and coloring text and backgrounds is integral to micron output, and while micron will attempt to gracefully degrade output even to 1-bit terminals, you will get the best output with terminals supporting at least 256 colors. True-color support is recommended.
Ta5d6ff>>>Terminal Font
Ta5d6ffWhile any font any unicode capable font can be used with micron, itTa5d6ff'Ta5d6ffs highly recommended to use a `*Ta5d6ff"Ta5d6ffNerd FontTa5d6ff"Ta5d6ff`* (see https://www.nerdfonts.com/), which will add a lot of extra glyphs and icons to your output.
Ta5d6ff> A Few Demo Outputs
Ta5d6ff`F222`Bddd
Ta5d6ff`cWith micron, you can control layout and presentation
Ta5d6ff`a
Ta5d6ff``
Ta5d6ff`B33f
Ta5d6ffYou can change background ...
Ta5d6ff``
Ta5d6ff`B393
Ta5d6ff`r`F320... and foreground colors`f
Ta5d6ff`a
Ta5d6ff`b
Ta5d6ffIf you want to make a break, horizontal dividers can be inserted. They can be plain, like the one below this text, or you can style them with unicode characters and glyphs, like the wavy divider in the beginning of this document.
Ta5d6ff-
Ta5d6ff`cText can be `_underlined`_, `!bold`! or `*italic`*.
Ta5d6ffYou can also `_`*`!`B5d5`F222combine`f`b`_ `_`Ff00f`Ff80o`Ffd0r`F9f0m`F0f2a`F0fdt`F07ft`F43fi`F70fn`Fe0fg`` for some fabulous effects.
Ta5d6ff`a
Ta5d6ff>>>Sections and Headings
Ta5d6ffYou can define an arbitrary number of sections and sub sections, each with their own named headings. Text inside sections will be automatically indented.
Ta5d6ff-
Ta5d6ffIf you place a divider inside a section, it will adhere to the section indents.
Ta5d6ff>>>>>
Ta5d6ffIf no heading text is defined, the section will appear as a sub-section without a header. This can be useful for creating indented blocks of text, like this one.
Ta5d6ff>Micron tags
Ta5d6ffTags are used to format text with micron. Some tags can appear anywhere in text, and some must appear at the beginning of a line. If you need to write text that contains a sequence that would be interpreted as a tag, you can escape it with the character Tffea00\\Ta5d6ff.
Ta5d6ffIn the following sections, the different tags will be introduced. Any styling set within micron can be reset to the default style by using the special Tffea00\\Ta5d6ff`Tffea00\\Ta5d6ff` tag anywhere in the markup, which will immediately remove any formatting previously specified.
Ta5d6ff>>Alignment
Ta5d6ffTo control text alignment use the tag Tffea00\\Ta5d6ff`c to center text, Tffea00\\Ta5d6ff`l to left-align, Tffea00\\Ta5d6ff`r to right-align, and Tffea00\\Ta5d6ff`a to return to the default alignment of the document. Alignment tags must appear at the beginning of a line. Here is an example:
Ta5d6ff`Faaa
Ta5d6ff`=
Ta5d6ff`cThis line will be centered.
Ta5d6ffSo will this.
Ta5d6ff`aThe alignment has now been returned to default.
Ta5d6ff`rThis will be aligned to the right
Ta5d6ff``
Ta5d6ff`=
Ta5d6ff``
Ta5d6ffThe above markup produces the following output:
Ta5d6ff`Faaa`B333
Ta5d6ff`cThis line will be centered.
Ta5d6ffSo will this.
Ta5d6ff`aThe alignment has now been returned to default.
Ta5d6ff`rThis will be aligned to the right
Ta5d6ff``
Ta5d6ff>>Formatting
Ta5d6ffText can be formatted as `!bold`! by using the Tffea00\\Ta5d6ff`! tag, `_underline`_ by using the Tffea00\\Ta5d6ff`_ tag and `*italic`* by using the Tffea00\\Ta5d6ff`* tag.
Ta5d6ffHereTa5d6ff'Ta5d6ffs an example of formatting text:
Ta5d6ff`Faaa
Ta5d6ff`=
Ta5d6ffWe shall soon see `!bold`! paragraphs of text decorated with `_underlines`_ and `*italics`*. Some even dare `!`*`_combine`` them!
Ta5d6ff`=
Ta5d6ff``
Ta5d6ffThe above markup produces the following output:
Ta5d6ff`Faaa`B333
Ta5d6ffWe shall soon see `!bold`! paragraphs of text decorated with `_underlines`_ and `*italics`*. Some even dare `!`*`_combine`!`*`_ them!
Ta5d6ff``
Ta5d6ff>>Sections
Ta5d6ffTo create sections and subsections, use the > tag. This tag must be placed at the beginning of a line. To specify a sub-section of any level, use any number of > tags. If text is placed after a > tag, it will be used as a heading.
Ta5d6ffHere is an example of sections:
Ta5d6ff`Faaa
Ta5d6ff`=
Ta5d6ff>High Level Stuff
Ta5d6ffThis is a section. It contains this text.
Ta5d6ff>>Another Level
Ta5d6ffThis is a sub section.
Ta5d6ff>>>Going deeper
Ta5d6ffA sub sub section. We could continue, but you get the point.
Ta5d6ff>>>>
Ta5d6ffWait! ItTa5d6ff'Ta5d6ffs worth noting that we can also create sections without headings. They look like this.
Ta5d6ff`=
Ta5d6ff``
Ta5d6ffThe above markup produces the following output:
Ta5d6ff`Faaa`B333
Ta5d6ff>High Level Stuff
Ta5d6ffThis is a section. It contains this text.
Ta5d6ff>>Another Level
Ta5d6ffThis is a sub section.
Ta5d6ff>>>Going deeper
Ta5d6ffA sub sub section. We could continue, but you get the point.
Ta5d6ff>>>>
Ta5d6ffWait! ItTa5d6ff'Ta5d6ffs worth noting that we can also create sections without headings. They look like this.
Ta5d6ff``
Ta5d6ff>Colors
Ta5d6ffForeground colors can be specified with the Tffea00\\Ta5d6ff`F tag, followed by three hexadecimal characters. To return to the default foreground color, use the Tffea00\\Ta5d6ff`f tag. Background color is specified in the same way, but by using the Tffea00\\Ta5d6ff`B and Tffea00\\Ta5d6ff`b tags.
Ta5d6ffHereTa5d6ff'Ta5d6ffs a few examples:
Ta5d6ff`Faaa
Ta5d6ff`=
Ta5d6ffYou can use `B5d5`F222 color `f`b `Ff00f`Ff80o`Ffd0r`F9f0m`F0f2a`F0fdt`F07ft`F43fi`F70fn`Fe0fg`f for some fabulous effects.
Ta5d6ff`=
Ta5d6ff``
Ta5d6ffThe above markup produces the following output:
Ta5d6ff`Faaa`B333
Ta5d6ffYou can use `B5d5`F222 color `f`B333 `Ff00f`Ff80o`Ffd0r`F9f0m`F0f2a`F0fdt`F07ft`F43fi`F70fn`Fe0fg`f for some fabulous effects.
Ta5d6ff``
Ta5d6ff>Literals
Ta5d6ffTo display literal content, for example source-code, or blocks of text that should not be interpreted by micron, you can use literal blocks, specified by the Tffea00\\Ta5d6ff`= tag. Below is the source code of this entire document, presented as a literal block.
Ta5d6ff-
Ta5d6ff`=
Ta5d6ff'''
Te6edf3TOPIC_MARKUP Tff7b72+Tff7b72= Te6edf3TOPIC_MARKUPTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff`=Ta5d6ff"Tb4b4b4, Ta5d6ff"Tffea00\\Ta5d6ff`=Ta5d6ff"Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff[ micron source for document goes here, we donTa5d6ff'Ta5d6fft want infinite recursion now, do we? ]Tffea00\nTffea00\\Ta5d6ff`=Ta5d6ff"
Te6edf3TOPIC_MARKUP Tff7b72+Tff7b72= Ta5d6ff"Tffea00\nTa5d6ff`=Tffea00\nTffea00\nTa5d6ff>Closing RemarksTffea00\nTffea00\nTa5d6ffIf you made it all the way here, you should be well equipped to write documents and pages using micron. Thank you for staying with me.Tffea00\nTffea00\nTa5d6ff`cTffea00\U0001F332Tffea00\nTa5d6ff"
Te6edf3TOPIC_FIRST_RUN Tff7b72= Ta5d6ff'''Ta5d6ff>First Time Information
Ta5d6ffHi there. This first run message will only appear once. It contains a few pointers on getting started with Nomad Network, and getting the most out of the program. YouTa5d6ff'Ta5d6ffre currently located in the guide section of the program. ITa5d6ff'Ta5d6ffm sorry I had to drag you here by force, but it will only happen this one time, I promise. If you ever get lost, return here and peruse the list of topics you see on the left. I will do my best to fill it with answers to mostly anything about Nomad Network.
Ta5d6ffTo get the most out of Nomad Network, you will need a terminal that supports UTF-8 and at least 256 colors, ideally true-color. By default, Nomad Network starts in low-color mode. It does this for the sake of compatibility, but it does look rather ugly. If your terminal supports true-color or just 256 colors, you should go to the `![ Config ]`! menu item, launch the editor and change the configuration to use a high-color mode.
Ta5d6ffIf you donTa5d6ff'Ta5d6fft already have a Nerd Font installed (see https://www.nerdfonts.com/), I also highly recommend to do so, since it will greatly expand the amount of glyphs, icons and graphics that Nomad Network can use.
Ta5d6ffNomad Network expects that you are already connected to some form of Reticulum network. That could be as simple as the default UDP-based demo interface on your local ethernet network, or as advanced as some elaborate hybrid RF and free-space optical laser network. This short guide wonTa5d6ff'Ta5d6fft go into any details on that, but you will find other entries in the guide that deal with network setup and configuration.
Ta5d6ffAt least, if Nomad Network launches, it means that it is connected to a running Reticulum instance, that should in turn be connected to `*something`*, which should get you started.
Ta5d6ffNow go out there and explore. This is still early days. See what you can find and create.
Ta5d6ff>>>>>>>>>>>>>>>
Ta5d6ff-Tffea00\u223f
Ta5d6ff<
Ta5d6ff'''
Te6edf3TOPIC_LICENSES Tff7b72= Ta5d6ff'''Ta5d6ff>Thanks, Acknowledgements and Licenses
Ta5d6ffLorem Ipsum
Ta5d6ff'''
Te6edf3TOPICS Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffIntroductionTa5d6ff"Tb4b4b4: Te6edf3TOPIC_INTRODUCTIONTb4b4b4,
Ta5d6ff"Ta5d6ffConversationsTa5d6ff"Tb4b4b4: Te6edf3TOPIC_CONVERSATIONSTb4b4b4,
Ta5d6ff"Ta5d6ffMarkupTa5d6ff"Tb4b4b4: Te6edf3TOPIC_MARKUPTb4b4b4,
Ta5d6ff"Ta5d6ffFirst RunTa5d6ff"Tb4b4b4: Te6edf3TOPIC_FIRST_RUNTb4b4b4,
Ta5d6ff"Ta5d6ffLicenses & CreditsTa5d6ff"Tb4b4b4: Te6edf3TOPIC_LICENSESTb4b4b4,
Tb4b4b4}
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────